package java8.list;

import java.util.Arrays;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;

/**
 * 城市demo
 */
public class CityDemo {
    private static List<String> cities = Arrays.asList(
      "上海市", "厦门市", "北京市", "天津市", "泉州市", "泉州市"
    );


    public static void main(String[] args) {
        System.out.println("--------------------------------");
        //判断集合中有某一元素存在某个关键词：判断城市中有一个是包含北京关键词
        boolean result = cities.stream().anyMatch(e -> e.contains("北京"));
        System.out.println(result);

        System.out.println("--------------------------------");
        //判断集合中所有元素都存在某个关键词：判断所有城市都有 市 关键词
        result = cities.stream().allMatch(e -> e.contains("市"));
        System.out.println(result);

        System.out.println("--------------------------------");
        //判断集合中所有元素都不包含某一个关键词：判断所有城市中，没有福州市
        result = cities.stream().noneMatch(e -> e.contains("福州市"));
        System.out.println(result);

        System.out.println("--------------------------------");
        //去除重复项
        List<String> newCities = cities.stream().distinct().collect(Collectors.toList());
        //迭代输出
        newCities.stream().forEach(System.out::println);

        System.out.println("--------------------------------");
        //查找第一个包含 泉州 关键词的项
        Optional<String> first = cities.stream().filter(e -> e.contains("泉州")).findFirst();
        System.out.println(first.get());

        System.out.println("--------------------------------");
        //将所有项输出为字符串，以逗号拼接
        System.out.println(cities.stream().collect(Collectors.joining(",")));

        System.out.println("--------------------------------");
        //只输出前两项元素
        cities.stream().limit(2).forEach(System.out::println);

        cities.stream().map(e -> {
            System.out.println(e);
            return true;
        });

    }

}
